{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T00:18:37.653503Z",
     "start_time": "2020-09-01T00:18:37.649513Z"
    }
   },
   "source": [
    "# 使用多种机器学习算法训练并预测鸢尾花数据集"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-03T00:14:55.537870Z",
     "start_time": "2020-09-03T00:14:51.904999Z"
    }
   },
   "outputs": [],
   "source": [
    "import os\n",
    "import math\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.datasets import load_iris"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 加载并查看数据 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-03T00:14:55.559792Z",
     "start_time": "2020-09-03T00:14:55.539829Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'data': array([[5.1, 3.5, 1.4, 0.2],\n",
       "        [4.9, 3. , 1.4, 0.2],\n",
       "        [4.7, 3.2, 1.3, 0.2],\n",
       "        [4.6, 3.1, 1.5, 0.2],\n",
       "        [5. , 3.6, 1.4, 0.2],\n",
       "        [5.4, 3.9, 1.7, 0.4],\n",
       "        [4.6, 3.4, 1.4, 0.3],\n",
       "        [5. , 3.4, 1.5, 0.2],\n",
       "        [4.4, 2.9, 1.4, 0.2],\n",
       "        [4.9, 3.1, 1.5, 0.1],\n",
       "        [5.4, 3.7, 1.5, 0.2],\n",
       "        [4.8, 3.4, 1.6, 0.2],\n",
       "        [4.8, 3. , 1.4, 0.1],\n",
       "        [4.3, 3. , 1.1, 0.1],\n",
       "        [5.8, 4. , 1.2, 0.2],\n",
       "        [5.7, 4.4, 1.5, 0.4],\n",
       "        [5.4, 3.9, 1.3, 0.4],\n",
       "        [5.1, 3.5, 1.4, 0.3],\n",
       "        [5.7, 3.8, 1.7, 0.3],\n",
       "        [5.1, 3.8, 1.5, 0.3],\n",
       "        [5.4, 3.4, 1.7, 0.2],\n",
       "        [5.1, 3.7, 1.5, 0.4],\n",
       "        [4.6, 3.6, 1. , 0.2],\n",
       "        [5.1, 3.3, 1.7, 0.5],\n",
       "        [4.8, 3.4, 1.9, 0.2],\n",
       "        [5. , 3. , 1.6, 0.2],\n",
       "        [5. , 3.4, 1.6, 0.4],\n",
       "        [5.2, 3.5, 1.5, 0.2],\n",
       "        [5.2, 3.4, 1.4, 0.2],\n",
       "        [4.7, 3.2, 1.6, 0.2],\n",
       "        [4.8, 3.1, 1.6, 0.2],\n",
       "        [5.4, 3.4, 1.5, 0.4],\n",
       "        [5.2, 4.1, 1.5, 0.1],\n",
       "        [5.5, 4.2, 1.4, 0.2],\n",
       "        [4.9, 3.1, 1.5, 0.2],\n",
       "        [5. , 3.2, 1.2, 0.2],\n",
       "        [5.5, 3.5, 1.3, 0.2],\n",
       "        [4.9, 3.6, 1.4, 0.1],\n",
       "        [4.4, 3. , 1.3, 0.2],\n",
       "        [5.1, 3.4, 1.5, 0.2],\n",
       "        [5. , 3.5, 1.3, 0.3],\n",
       "        [4.5, 2.3, 1.3, 0.3],\n",
       "        [4.4, 3.2, 1.3, 0.2],\n",
       "        [5. , 3.5, 1.6, 0.6],\n",
       "        [5.1, 3.8, 1.9, 0.4],\n",
       "        [4.8, 3. , 1.4, 0.3],\n",
       "        [5.1, 3.8, 1.6, 0.2],\n",
       "        [4.6, 3.2, 1.4, 0.2],\n",
       "        [5.3, 3.7, 1.5, 0.2],\n",
       "        [5. , 3.3, 1.4, 0.2],\n",
       "        [7. , 3.2, 4.7, 1.4],\n",
       "        [6.4, 3.2, 4.5, 1.5],\n",
       "        [6.9, 3.1, 4.9, 1.5],\n",
       "        [5.5, 2.3, 4. , 1.3],\n",
       "        [6.5, 2.8, 4.6, 1.5],\n",
       "        [5.7, 2.8, 4.5, 1.3],\n",
       "        [6.3, 3.3, 4.7, 1.6],\n",
       "        [4.9, 2.4, 3.3, 1. ],\n",
       "        [6.6, 2.9, 4.6, 1.3],\n",
       "        [5.2, 2.7, 3.9, 1.4],\n",
       "        [5. , 2. , 3.5, 1. ],\n",
       "        [5.9, 3. , 4.2, 1.5],\n",
       "        [6. , 2.2, 4. , 1. ],\n",
       "        [6.1, 2.9, 4.7, 1.4],\n",
       "        [5.6, 2.9, 3.6, 1.3],\n",
       "        [6.7, 3.1, 4.4, 1.4],\n",
       "        [5.6, 3. , 4.5, 1.5],\n",
       "        [5.8, 2.7, 4.1, 1. ],\n",
       "        [6.2, 2.2, 4.5, 1.5],\n",
       "        [5.6, 2.5, 3.9, 1.1],\n",
       "        [5.9, 3.2, 4.8, 1.8],\n",
       "        [6.1, 2.8, 4. , 1.3],\n",
       "        [6.3, 2.5, 4.9, 1.5],\n",
       "        [6.1, 2.8, 4.7, 1.2],\n",
       "        [6.4, 2.9, 4.3, 1.3],\n",
       "        [6.6, 3. , 4.4, 1.4],\n",
       "        [6.8, 2.8, 4.8, 1.4],\n",
       "        [6.7, 3. , 5. , 1.7],\n",
       "        [6. , 2.9, 4.5, 1.5],\n",
       "        [5.7, 2.6, 3.5, 1. ],\n",
       "        [5.5, 2.4, 3.8, 1.1],\n",
       "        [5.5, 2.4, 3.7, 1. ],\n",
       "        [5.8, 2.7, 3.9, 1.2],\n",
       "        [6. , 2.7, 5.1, 1.6],\n",
       "        [5.4, 3. , 4.5, 1.5],\n",
       "        [6. , 3.4, 4.5, 1.6],\n",
       "        [6.7, 3.1, 4.7, 1.5],\n",
       "        [6.3, 2.3, 4.4, 1.3],\n",
       "        [5.6, 3. , 4.1, 1.3],\n",
       "        [5.5, 2.5, 4. , 1.3],\n",
       "        [5.5, 2.6, 4.4, 1.2],\n",
       "        [6.1, 3. , 4.6, 1.4],\n",
       "        [5.8, 2.6, 4. , 1.2],\n",
       "        [5. , 2.3, 3.3, 1. ],\n",
       "        [5.6, 2.7, 4.2, 1.3],\n",
       "        [5.7, 3. , 4.2, 1.2],\n",
       "        [5.7, 2.9, 4.2, 1.3],\n",
       "        [6.2, 2.9, 4.3, 1.3],\n",
       "        [5.1, 2.5, 3. , 1.1],\n",
       "        [5.7, 2.8, 4.1, 1.3],\n",
       "        [6.3, 3.3, 6. , 2.5],\n",
       "        [5.8, 2.7, 5.1, 1.9],\n",
       "        [7.1, 3. , 5.9, 2.1],\n",
       "        [6.3, 2.9, 5.6, 1.8],\n",
       "        [6.5, 3. , 5.8, 2.2],\n",
       "        [7.6, 3. , 6.6, 2.1],\n",
       "        [4.9, 2.5, 4.5, 1.7],\n",
       "        [7.3, 2.9, 6.3, 1.8],\n",
       "        [6.7, 2.5, 5.8, 1.8],\n",
       "        [7.2, 3.6, 6.1, 2.5],\n",
       "        [6.5, 3.2, 5.1, 2. ],\n",
       "        [6.4, 2.7, 5.3, 1.9],\n",
       "        [6.8, 3. , 5.5, 2.1],\n",
       "        [5.7, 2.5, 5. , 2. ],\n",
       "        [5.8, 2.8, 5.1, 2.4],\n",
       "        [6.4, 3.2, 5.3, 2.3],\n",
       "        [6.5, 3. , 5.5, 1.8],\n",
       "        [7.7, 3.8, 6.7, 2.2],\n",
       "        [7.7, 2.6, 6.9, 2.3],\n",
       "        [6. , 2.2, 5. , 1.5],\n",
       "        [6.9, 3.2, 5.7, 2.3],\n",
       "        [5.6, 2.8, 4.9, 2. ],\n",
       "        [7.7, 2.8, 6.7, 2. ],\n",
       "        [6.3, 2.7, 4.9, 1.8],\n",
       "        [6.7, 3.3, 5.7, 2.1],\n",
       "        [7.2, 3.2, 6. , 1.8],\n",
       "        [6.2, 2.8, 4.8, 1.8],\n",
       "        [6.1, 3. , 4.9, 1.8],\n",
       "        [6.4, 2.8, 5.6, 2.1],\n",
       "        [7.2, 3. , 5.8, 1.6],\n",
       "        [7.4, 2.8, 6.1, 1.9],\n",
       "        [7.9, 3.8, 6.4, 2. ],\n",
       "        [6.4, 2.8, 5.6, 2.2],\n",
       "        [6.3, 2.8, 5.1, 1.5],\n",
       "        [6.1, 2.6, 5.6, 1.4],\n",
       "        [7.7, 3. , 6.1, 2.3],\n",
       "        [6.3, 3.4, 5.6, 2.4],\n",
       "        [6.4, 3.1, 5.5, 1.8],\n",
       "        [6. , 3. , 4.8, 1.8],\n",
       "        [6.9, 3.1, 5.4, 2.1],\n",
       "        [6.7, 3.1, 5.6, 2.4],\n",
       "        [6.9, 3.1, 5.1, 2.3],\n",
       "        [5.8, 2.7, 5.1, 1.9],\n",
       "        [6.8, 3.2, 5.9, 2.3],\n",
       "        [6.7, 3.3, 5.7, 2.5],\n",
       "        [6.7, 3. , 5.2, 2.3],\n",
       "        [6.3, 2.5, 5. , 1.9],\n",
       "        [6.5, 3. , 5.2, 2. ],\n",
       "        [6.2, 3.4, 5.4, 2.3],\n",
       "        [5.9, 3. , 5.1, 1.8]]),\n",
       " 'target': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]),\n",
       " 'frame': None,\n",
       " 'target_names': array(['setosa', 'versicolor', 'virginica'], dtype='<U10'),\n",
       " 'DESCR': '.. _iris_dataset:\\n\\nIris plants dataset\\n--------------------\\n\\n**Data Set Characteristics:**\\n\\n    :Number of Instances: 150 (50 in each of three classes)\\n    :Number of Attributes: 4 numeric, predictive attributes and the class\\n    :Attribute Information:\\n        - sepal length in cm\\n        - sepal width in cm\\n        - petal length in cm\\n        - petal width in cm\\n        - class:\\n                - Iris-Setosa\\n                - Iris-Versicolour\\n                - Iris-Virginica\\n                \\n    :Summary Statistics:\\n\\n    ============== ==== ==== ======= ===== ====================\\n                    Min  Max   Mean    SD   Class Correlation\\n    ============== ==== ==== ======= ===== ====================\\n    sepal length:   4.3  7.9   5.84   0.83    0.7826\\n    sepal width:    2.0  4.4   3.05   0.43   -0.4194\\n    petal length:   1.0  6.9   3.76   1.76    0.9490  (high!)\\n    petal width:    0.1  2.5   1.20   0.76    0.9565  (high!)\\n    ============== ==== ==== ======= ===== ====================\\n\\n    :Missing Attribute Values: None\\n    :Class Distribution: 33.3% for each of 3 classes.\\n    :Creator: R.A. Fisher\\n    :Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)\\n    :Date: July, 1988\\n\\nThe famous Iris database, first used by Sir R.A. Fisher. The dataset is taken\\nfrom Fisher\\'s paper. Note that it\\'s the same as in R, but not as in the UCI\\nMachine Learning Repository, which has two wrong data points.\\n\\nThis is perhaps the best known database to be found in the\\npattern recognition literature.  Fisher\\'s paper is a classic in the field and\\nis referenced frequently to this day.  (See Duda & Hart, for example.)  The\\ndata set contains 3 classes of 50 instances each, where each class refers to a\\ntype of iris plant.  One class is linearly separable from the other 2; the\\nlatter are NOT linearly separable from each other.\\n\\n.. topic:: References\\n\\n   - Fisher, R.A. \"The use of multiple measurements in taxonomic problems\"\\n     Annual Eugenics, 7, Part II, 179-188 (1936); also in \"Contributions to\\n     Mathematical Statistics\" (John Wiley, NY, 1950).\\n   - Duda, R.O., & Hart, P.E. (1973) Pattern Classification and Scene Analysis.\\n     (Q327.D83) John Wiley & Sons.  ISBN 0-471-22361-1.  See page 218.\\n   - Dasarathy, B.V. (1980) \"Nosing Around the Neighborhood: A New System\\n     Structure and Classification Rule for Recognition in Partially Exposed\\n     Environments\".  IEEE Transactions on Pattern Analysis and Machine\\n     Intelligence, Vol. PAMI-2, No. 1, 67-71.\\n   - Gates, G.W. (1972) \"The Reduced Nearest Neighbor Rule\".  IEEE Transactions\\n     on Information Theory, May 1972, 431-433.\\n   - See also: 1988 MLC Proceedings, 54-64.  Cheeseman et al\"s AUTOCLASS II\\n     conceptual clustering system finds 3 classes in the data.\\n   - Many, many more ...',\n",
       " 'feature_names': ['sepal length (cm)',\n",
       "  'sepal width (cm)',\n",
       "  'petal length (cm)',\n",
       "  'petal width (cm)'],\n",
       " 'filename': 'd:\\\\python_env\\\\env_tensorflow\\\\lib\\\\site-packages\\\\sklearn\\\\datasets\\\\data\\\\iris.csv'}"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris = load_iris()\n",
    "iris\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-03T00:14:55.568767Z",
     "start_time": "2020-09-03T00:14:55.562784Z"
    }
   },
   "outputs": [],
   "source": [
    "data = iris.data\n",
    "target = iris.target\n",
    "target_names = iris.target_names\n",
    "feature_name = iris.feature_names"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-03T00:14:55.587702Z",
     "start_time": "2020-09-03T00:14:55.574738Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[5.1, 3.5, 1.4, 0.2],\n",
       "       [4.9, 3. , 1.4, 0.2],\n",
       "       [4.7, 3.2, 1.3, 0.2],\n",
       "       [4.6, 3.1, 1.5, 0.2],\n",
       "       [5. , 3.6, 1.4, 0.2],\n",
       "       [5.4, 3.9, 1.7, 0.4],\n",
       "       [4.6, 3.4, 1.4, 0.3],\n",
       "       [5. , 3.4, 1.5, 0.2],\n",
       "       [4.4, 2.9, 1.4, 0.2],\n",
       "       [4.9, 3.1, 1.5, 0.1]])"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-03T00:14:55.599670Z",
     "start_time": "2020-09-03T00:14:55.590693Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-03T00:14:55.610641Z",
     "start_time": "2020-09-03T00:14:55.601664Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['setosa', 'versicolor', 'virginica'], dtype='<U10')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "target_names"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-03T00:14:55.626598Z",
     "start_time": "2020-09-03T00:14:55.612640Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['sepal length (cm)',\n",
       " 'sepal width (cm)',\n",
       " 'petal length (cm)',\n",
       " 'petal width (cm)']"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feature_name"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-03T00:14:55.721345Z",
     "start_time": "2020-09-03T00:14:55.715361Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.1, 4.9, 4.7, 4.6, 5. , 5.4, 4.6, 5. , 4.4, 4.9, 5.4, 4.8, 4.8,\n",
       "       4.3, 5.8, 5.7, 5.4, 5.1, 5.7, 5.1, 5.4, 5.1, 4.6, 5.1, 4.8, 5. ,\n",
       "       5. , 5.2, 5.2, 4.7, 4.8, 5.4, 5.2, 5.5, 4.9, 5. , 5.5, 4.9, 4.4,\n",
       "       5.1, 5. , 4.5, 4.4, 5. , 5.1, 4.8, 5.1, 4.6, 5.3, 5. , 7. , 6.4,\n",
       "       6.9, 5.5, 6.5, 5.7, 6.3, 4.9, 6.6, 5.2, 5. , 5.9, 6. , 6.1, 5.6,\n",
       "       6.7, 5.6, 5.8, 6.2, 5.6, 5.9, 6.1, 6.3, 6.1, 6.4, 6.6, 6.8, 6.7,\n",
       "       6. , 5.7, 5.5, 5.5, 5.8, 6. , 5.4, 6. , 6.7, 6.3, 5.6, 5.5, 5.5,\n",
       "       6.1, 5.8, 5. , 5.6, 5.7, 5.7, 6.2, 5.1, 5.7, 6.3, 5.8, 7.1, 6.3,\n",
       "       6.5, 7.6, 4.9, 7.3, 6.7, 7.2, 6.5, 6.4, 6.8, 5.7, 5.8, 6.4, 6.5,\n",
       "       7.7, 7.7, 6. , 6.9, 5.6, 7.7, 6.3, 6.7, 7.2, 6.2, 6.1, 6.4, 7.2,\n",
       "       7.4, 7.9, 6.4, 6.3, 6.1, 7.7, 6.3, 6.4, 6. , 6.9, 6.7, 6.9, 5.8,\n",
       "       6.8, 6.7, 6.7, 6.3, 6.5, 6.2, 5.9])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[:, 0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 对数据进行可视化并分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-03T00:15:36.708207Z",
     "start_time": "2020-09-03T00:15:35.918182Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x720 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(15, 10))\n",
    "plt.subplot(231)\n",
    "plt.scatter(data[:, 0], data[:, 1])\n",
    "plt.title(feature_name[0] + \"-\" + feature_name[1])\n",
    "plt.xlabel(feature_name[0])\n",
    "plt.ylabel(feature_name[1])\n",
    "\n",
    "plt.subplot(232)\n",
    "plt.scatter(data[:, 0], data[:, 2])\n",
    "plt.title(feature_name[0] + \"-\" + feature_name[2])\n",
    "plt.xlabel(feature_name[0])\n",
    "plt.ylabel(feature_name[2])\n",
    "\n",
    "plt.subplot(233)\n",
    "plt.scatter(data[:, 0], data[:, 3])\n",
    "plt.title(feature_name[0] + \"-\" + feature_name[3])\n",
    "plt.xlabel(feature_name[0])\n",
    "plt.ylabel(feature_name[3])\n",
    "\n",
    "plt.subplot(234)\n",
    "plt.scatter(data[:, 1], data[:, 2])\n",
    "plt.title(feature_name[1] + \"-\" + feature_name[2])\n",
    "plt.xlabel(feature_name[1])\n",
    "plt.ylabel(feature_name[2])\n",
    "\n",
    "plt.subplot(235)\n",
    "plt.scatter(data[:, 1], data[:, 3])\n",
    "plt.title(feature_name[1] + \"-\" + feature_name[3])\n",
    "plt.xlabel(feature_name[1])\n",
    "plt.ylabel(feature_name[3])\n",
    "\n",
    "plt.subplot(236)\n",
    "plt.scatter(data[:, 2], data[:, 3])\n",
    "plt.title(feature_name[2] + \"-\" + feature_name[3])\n",
    "plt.xlabel(feature_name[2])\n",
    "plt.ylabel(feature_name[3])\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由以上可视化可以看出: sepal length与petal length具有一定的相关性, sepal length与petal width具有一定的相关性, petal length与petal width相关性较大"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 查看特征之间的相关性矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-03T00:15:38.875796Z",
     "start_time": "2020-09-03T00:15:38.869771Z"
    }
   },
   "outputs": [],
   "source": [
    "data = pd.DataFrame(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-03T00:15:39.436732Z",
     "start_time": "2020-09-03T00:15:39.391827Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>150.000000</td>\n",
       "      <td>150.000000</td>\n",
       "      <td>150.000000</td>\n",
       "      <td>150.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>5.843333</td>\n",
       "      <td>3.057333</td>\n",
       "      <td>3.758000</td>\n",
       "      <td>1.199333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.828066</td>\n",
       "      <td>0.435866</td>\n",
       "      <td>1.765298</td>\n",
       "      <td>0.762238</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>4.300000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.100000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>5.100000</td>\n",
       "      <td>2.800000</td>\n",
       "      <td>1.600000</td>\n",
       "      <td>0.300000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>5.800000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>4.350000</td>\n",
       "      <td>1.300000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>6.400000</td>\n",
       "      <td>3.300000</td>\n",
       "      <td>5.100000</td>\n",
       "      <td>1.800000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>7.900000</td>\n",
       "      <td>4.400000</td>\n",
       "      <td>6.900000</td>\n",
       "      <td>2.500000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                0           1           2           3\n",
       "count  150.000000  150.000000  150.000000  150.000000\n",
       "mean     5.843333    3.057333    3.758000    1.199333\n",
       "std      0.828066    0.435866    1.765298    0.762238\n",
       "min      4.300000    2.000000    1.000000    0.100000\n",
       "25%      5.100000    2.800000    1.600000    0.300000\n",
       "50%      5.800000    3.000000    4.350000    1.300000\n",
       "75%      6.400000    3.300000    5.100000    1.800000\n",
       "max      7.900000    4.400000    6.900000    2.500000"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "data.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**查看样本是否平衡**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-03T00:20:15.282350Z",
     "start_time": "2020-09-03T00:20:15.271356Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2    50\n",
       "1    50\n",
       "0    50\n",
       "Name: 0, dtype: int64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame(target).iloc[:, 0].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:00.459532Z",
     "start_time": "2020-09-01T08:43:00.447564Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     0    1    2    3\n",
       "0  5.1  3.5  1.4  0.2\n",
       "1  4.9  3.0  1.4  0.2\n",
       "2  4.7  3.2  1.3  0.2\n",
       "3  4.6  3.1  1.5  0.2\n",
       "4  5.0  3.6  1.4  0.2"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:00.466548Z",
     "start_time": "2020-09-01T08:43:00.462525Z"
    }
   },
   "outputs": [],
   "source": [
    "data.columns = feature_name"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:00.482471Z",
     "start_time": "2020-09-01T08:43:00.468515Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal length (cm)</th>\n",
       "      <th>sepal width (cm)</th>\n",
       "      <th>petal length (cm)</th>\n",
       "      <th>petal width (cm)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)\n",
       "0                5.1               3.5                1.4               0.2\n",
       "1                4.9               3.0                1.4               0.2\n",
       "2                4.7               3.2                1.3               0.2\n",
       "3                4.6               3.1                1.5               0.2\n",
       "4                5.0               3.6                1.4               0.2"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:00.504425Z",
     "start_time": "2020-09-01T08:43:00.486461Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal length (cm)</th>\n",
       "      <th>sepal width (cm)</th>\n",
       "      <th>petal length (cm)</th>\n",
       "      <th>petal width (cm)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>sepal length (cm)</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.117570</td>\n",
       "      <td>0.871754</td>\n",
       "      <td>0.817941</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sepal width (cm)</th>\n",
       "      <td>-0.117570</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.428440</td>\n",
       "      <td>-0.366126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>petal length (cm)</th>\n",
       "      <td>0.871754</td>\n",
       "      <td>-0.428440</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.962865</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>petal width (cm)</th>\n",
       "      <td>0.817941</td>\n",
       "      <td>-0.366126</td>\n",
       "      <td>0.962865</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   sepal length (cm)  sepal width (cm)  petal length (cm)  \\\n",
       "sepal length (cm)           1.000000         -0.117570           0.871754   \n",
       "sepal width (cm)           -0.117570          1.000000          -0.428440   \n",
       "petal length (cm)           0.871754         -0.428440           1.000000   \n",
       "petal width (cm)            0.817941         -0.366126           0.962865   \n",
       "\n",
       "                   petal width (cm)  \n",
       "sepal length (cm)          0.817941  \n",
       "sepal width (cm)          -0.366126  \n",
       "petal length (cm)          0.962865  \n",
       "petal width (cm)           1.000000  "
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.corr()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "有以上相关系数矩阵可以发现: petal length和petal width具有很高的相关性,因此可以删除其中一个特征. 而petal length与sepal length也具有很高的相关性, 因此也删除掉其中一个, 所以可以删除sepal length和petal width两个特征"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T00:36:46.474455Z",
     "start_time": "2020-09-01T00:36:46.469469Z"
    }
   },
   "source": [
    "**获取删除sepal length和petal width两个特征后的数据集**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:00.518376Z",
     "start_time": "2020-09-01T08:43:00.506407Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal width (cm)</th>\n",
       "      <th>petal length (cm)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sepal width (cm)  petal length (cm)\n",
       "0               3.5                1.4\n",
       "1               3.0                1.4\n",
       "2               3.2                1.3\n",
       "3               3.1                1.5\n",
       "4               3.6                1.4"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data1 = data.iloc[:, [1, 2]]\n",
    "data1.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 对处理后的数据进行可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:00.711923Z",
     "start_time": "2020-09-01T08:43:00.520379Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(data1.iloc[:, 0][target==0], data1.iloc[:, 1][target==0], label=target_names[0])\n",
    "plt.scatter(data1.iloc[:, 0][target==1], data1.iloc[:, 1][target==1], label=target_names[1])\n",
    "plt.scatter(data1.iloc[:, 0][target==2], data1.iloc[:, 1][target==2], label=target_names[2])\n",
    "plt.xlabel(feature_name[0])\n",
    "plt.ylabel(feature_name[1])\n",
    "plt.legend()\n",
    "plt.title('data visualization')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 划分训练接和测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:00.751033Z",
     "start_time": "2020-09-01T08:43:00.713913Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(data1, target,test_size=0.3, random_state=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:00.762015Z",
     "start_time": "2020-09-01T08:43:00.752809Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal width (cm)</th>\n",
       "      <th>petal length (cm)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>118</th>\n",
       "      <td>2.6</td>\n",
       "      <td>6.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>3.8</td>\n",
       "      <td>1.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>59</th>\n",
       "      <td>2.7</td>\n",
       "      <td>3.9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     sepal width (cm)  petal length (cm)\n",
       "118               2.6                6.9\n",
       "18                3.8                1.7\n",
       "4                 3.6                1.4\n",
       "45                3.0                1.4\n",
       "59                2.7                3.9"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:00.774845Z",
     "start_time": "2020-09-01T08:43:00.763779Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal width (cm)</th>\n",
       "      <th>petal length (cm)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>4.0</td>\n",
       "      <td>1.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>2.5</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75</th>\n",
       "      <td>3.0</td>\n",
       "      <td>4.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>3.9</td>\n",
       "      <td>1.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>131</th>\n",
       "      <td>3.8</td>\n",
       "      <td>6.4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     sepal width (cm)  petal length (cm)\n",
       "14                4.0                1.2\n",
       "98                2.5                3.0\n",
       "75                3.0                4.4\n",
       "16                3.9                1.3\n",
       "131               3.8                6.4"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_test.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:00.782830Z",
     "start_time": "2020-09-01T08:43:00.776852Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(105, 45, 105, 45)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(X_train), len(X_test), len(y_train), len(y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 使用逻辑回归进行训练预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:00.852637Z",
     "start_time": "2020-09-01T08:43:00.784798Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.metrics import accuracy_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:00.884535Z",
     "start_time": "2020-09-01T08:43:00.857604Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression()"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr = LogisticRegression()\n",
    "lr.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:00.897500Z",
     "start_time": "2020-09-01T08:43:00.887524Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9777777777777777"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predict = lr.predict(X_test)\n",
    "accuracy_score(y_test, predict)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 查看拟合的直线在数据中的位置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:08:26.769903Z",
     "start_time": "2020-09-01T09:08:26.762921Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([[ 0.68489087, -2.59180692],\n",
       "        [-0.51332094, -0.23463827],\n",
       "        [-0.17156993,  2.82644519]]),\n",
       " array([  7.22856868,   4.232646  , -11.46121468]))"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr.coef_, lr.intercept_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:09:55.384495Z",
     "start_time": "2020-09-01T09:09:55.377499Z"
    }
   },
   "outputs": [],
   "source": [
    "x1_max = data1.iloc[:, 0].max()\n",
    "x2_max = data1.iloc[:, 1].max()\n",
    "x1_min = data1.iloc[:, 0].min()\n",
    "x2_min = data1.iloc[:, 1].min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:09:55.644967Z",
     "start_time": "2020-09-01T09:09:55.636997Z"
    }
   },
   "outputs": [],
   "source": [
    "x1, x2 = np.meshgrid(np.arange(x1_min-1, x1_max+1, 0.01),\n",
    "                    np.arange(x2_min-1, x2_max+1, 0.01))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:09:55.973415Z",
     "start_time": "2020-09-01T09:09:55.963427Z"
    }
   },
   "outputs": [],
   "source": [
    "z = np.c_[x1.ravel(), x2.ravel()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:09:58.308425Z",
     "start_time": "2020-09-01T09:09:58.302430Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(347600, 2)"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:08:30.790368Z",
     "start_time": "2020-09-01T09:08:30.763435Z"
    }
   },
   "outputs": [],
   "source": [
    "predict_l = lr.predict(z)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:20:03.359643Z",
     "start_time": "2020-09-01T09:20:03.350679Z"
    }
   },
   "outputs": [],
   "source": [
    "def plt_data(x1, x2, predict):\n",
    "    predict = predict.reshape(x1.shape)\n",
    "    plt.contourf(x1, x2, predict, alpha=0.4, cmap=plt.cm.RdYlBu)\n",
    "    plt.scatter(data1.iloc[:, 0][target==0], data1.iloc[:, 1][target==0], label=target_names[0])\n",
    "    plt.scatter(data1.iloc[:, 0][target==1], data1.iloc[:, 1][target==1], label=target_names[1])\n",
    "    plt.scatter(data1.iloc[:, 0][target==2], data1.iloc[:, 1][target==2], label=target_names[2])\n",
    "    plt.xlabel(feature_name[1])\n",
    "    plt.ylabel(feature_name[2])\n",
    "    plt.legend()\n",
    "    plt.title('data visualization')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:20:03.798178Z",
     "start_time": "2020-09-01T09:20:03.512904Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt_data(x1, x2, predict_l)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 使用knn算法进行训练预测`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:01.330341Z",
     "start_time": "2020-09-01T08:43:01.289450Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.model_selection import cross_val_score"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**使用学习曲线选择参数k**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:02.616900Z",
     "start_time": "2020-09-01T08:43:01.332334Z"
    }
   },
   "outputs": [],
   "source": [
    "scores = []\n",
    "for i in range(1, 20):\n",
    "    knn = KNeighborsClassifier(i)\n",
    "    score = cross_val_score(knn, data1, target, cv=10, scoring='accuracy').mean()\n",
    "    scores.append(score)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:02.770489Z",
     "start_time": "2020-09-01T08:43:02.618894Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot([i for i in range(1, 20)], scores)\n",
    "plt.xlabel('k')\n",
    "plt.ylabel('score')\n",
    "plt.title('knn learning rate')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:02.778494Z",
     "start_time": "2020-09-01T08:43:02.772497Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.9600000000000002, 5)"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "max(scores), scores.index(max(scores))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由学习曲线可以看出, 当k为5的时候, 准确率最高为0.96"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:02.792456Z",
     "start_time": "2020-09-01T08:43:02.781460Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier()"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn = KNeighborsClassifier(5)\n",
    "knn.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T08:43:02.807390Z",
     "start_time": "2020-09-01T08:43:02.794424Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9555555555555556"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predict = knn.predict(X_test)\n",
    "accuracy_score(predict, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:20:40.827844Z",
     "start_time": "2020-09-01T09:20:30.879439Z"
    }
   },
   "outputs": [],
   "source": [
    "knn_predict = knn.predict(z)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:20:41.163911Z",
     "start_time": "2020-09-01T09:20:40.829805Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt_data(x1, x2, knn_predict)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 使用SVM训练并预测数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 202,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:53:13.931294Z",
     "start_time": "2020-09-01T09:53:13.923279Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.svm import SVC"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**对数据进行标准化处理**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 203,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:53:21.413782Z",
     "start_time": "2020-09-01T09:53:21.405804Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 204,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:53:21.612254Z",
     "start_time": "2020-09-01T09:53:21.588316Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "StandardScaler()"
      ]
     },
     "execution_count": 204,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scaler = StandardScaler()\n",
    "scaler.fit(data1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:53:21.818702Z",
     "start_time": "2020-09-01T09:53:21.802744Z"
    }
   },
   "outputs": [],
   "source": [
    "data1_scaler = scaler.transform(data1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 208,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:53:38.730515Z",
     "start_time": "2020-09-01T09:53:38.719509Z"
    }
   },
   "outputs": [],
   "source": [
    "X_train_scaler, X_test_scaler, y_scaler_train, y_scaler_test = train_test_split(data1_scaler, target, random_state=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 209,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:53:40.189878Z",
     "start_time": "2020-09-01T09:53:40.171926Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC()"
      ]
     },
     "execution_count": 209,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svm = SVC()\n",
    "svm.fit(X_train_scaler, y_scaler_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:53:40.429237Z",
     "start_time": "2020-09-01T09:53:40.411283Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8947368421052632"
      ]
     },
     "execution_count": 210,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predict = svm.predict(X_test_scaler)\n",
    "accuracy_score(predict, y_scaler_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 211,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:53:40.647689Z",
     "start_time": "2020-09-01T09:53:40.634734Z"
    }
   },
   "outputs": [],
   "source": [
    "x1_scaler_max = data1_scaler[:, 0].max()\n",
    "x1_scaler_min = data1_scaler[:, 0].min()\n",
    "x2_scaler_max = data1_scaler[:, 1].max()\n",
    "x2_scaler_min = data1_scaler[:, 1].min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 212,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:53:40.898979Z",
     "start_time": "2020-09-01T09:53:40.855096Z"
    }
   },
   "outputs": [],
   "source": [
    "x1_scaler, x2_scaler = np.meshgrid(np.arange(x1_scaler_min-1, x1_scaler_max+1, 0.01),\n",
    "                                  np.arange(x2_scaler_min-1, x2_scaler_max+1, 0.01))\n",
    "z_scaler = np.c_[x1_scaler.ravel(), x2_scaler.ravel()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 213,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:53:41.183222Z",
     "start_time": "2020-09-01T09:53:41.170254Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(403608, 2)"
      ]
     },
     "execution_count": 213,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z_scaler.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 217,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:54:29.837221Z",
     "start_time": "2020-09-01T09:54:28.069910Z"
    }
   },
   "outputs": [],
   "source": [
    "predict_svm = svm.predict(z_scaler)\n",
    "predict_svm = predict_svm.reshape(x1_scaler.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 218,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:54:30.736826Z",
     "start_time": "2020-09-01T09:54:29.844170Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.contourf(x1_scaler, x2_scaler, predict_svm, alpha=0.3)\n",
    "plt.scatter(data1_scaler[:, 0][target==0], data1_scaler[:, 1][target==0], label=target_names[0])\n",
    "plt.scatter(data1_scaler[:, 0][target==1], data1_scaler[:, 1][target==1], label=target_names[1])\n",
    "plt.scatter(data1_scaler[:, 0][target==2], data1_scaler[:, 1][target==2], label=target_names[2])\n",
    "plt.xlabel(feature_name[1])\n",
    "plt.ylabel(feature_name[2])\n",
    "plt.legend()\n",
    "plt.title('svm')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 使用决策树进行预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:04:34.874819Z",
     "start_time": "2020-09-01T09:04:34.870829Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.tree import DecisionTreeClassifier"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**查看默认参数下决策树的预测效果**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:05:16.514846Z",
     "start_time": "2020-09-01T09:05:16.510869Z"
    }
   },
   "outputs": [],
   "source": [
    "tree = DecisionTreeClassifier()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:06:00.048009Z",
     "start_time": "2020-09-01T09:06:00.033028Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9777777777777777"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tree.fit(X_train, y_train)\n",
    "predict = tree.predict(X_test)\n",
    "accuracy_score(predict, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**对默认参数的决策树预测进行可视化**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:21:50.595404Z",
     "start_time": "2020-09-01T09:21:50.567508Z"
    }
   },
   "outputs": [],
   "source": [
    "tree_predict = tree.predict(z)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:22:04.120594Z",
     "start_time": "2020-09-01T09:22:03.871897Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAETCAYAAAAiZy2MAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3debxVdb3/8dfnTEzKTKBoGg6J84De7KZAOSEqqF31ytXM3w1Ty7zlTbNBq5vX1IabhsYth5zKHC8qKlZgmaUYiqiEmTIfHBgFDhw4n98fa284w9pr7X3WXmcP5/18PM6Dc757DZ+9gM/57s/3u77L3B0REakeNaUOQEREikuJXUSkyiixi4hUGSV2EZEqo8QuIlJllNhFRKqMErukwszeNrPdyyCO/zGzM1M8/tVmdnVI+2VmdlmK5031+FLZ6kodgHRfZtYfOM/df5zWOdz9S2kdO+a8NxTjOGZ2tbtfndbxpTqpxy6l1B+4tNRBlLmrSh2AVB4ldikKM6sxs5vNbLmZ3Q3Ut3rt22a21MwWmdk5mbZ7gBeAXc2s0cyeiNo+4rwXm9kNrX7+rZkd2ern283svHb7fNvMlmVivSjTdp6Z3d5qm5lmNqbQeFrt36ZEY2Z9M++z0czeMTM3s36Z1z6fOfZSM7s80/Z9M2vMfN9oZq9GHT/T9m9m9lamDHZeq/d1d+brfTN7wMwsn/cglUuJXYrl08ChwEeAB4GdAczsw8BRwN7Ax4DrAdz9bOBwYLG7D3P3E6K2j/AAcHxm3x2A3YE/59rYzAYCXwP2A/YHPhV18E7EE8rd12be5zBgKvBzd19jZj2BczLH3gu4zMx2cPfLM9uS2W+/mDj3Aa4FjgY+DnzHzA7IvHw68CtgN+CfgYM78x6kcqjGLsXyceB+d28CHjCz1QDuvsjMLgW+AowFhkYdpBPbN5rZqkwCPgR41KMXQFoD/A34EfAE8Jkc21ln4oljZicAJxJcL9y9yczOJUjuRwEDgcHABwUe+liC9744c56HCH7hvQfMdvdpmfa/Af2SvAcpf+qxS7EY0DqhtgCY2VHAQ8A/gPNiD1Lg9hkPAOMyX/dHbejuWwk+KdwPjAbmmFlDyKbDE8QTysx2BX4KnJH5BYiZ7QE8A6wk+OWxOMEpvN332Z/fzLGNVCkldimW54HTzKyHmU0g6HkC/FPmtXsJeqqtvQ8MMrPema9eMdvn8gBwAkGJ4dmoDc1sb+C3ma/LgWHAIGAtsGtmmxOBPfKIP29mVg/8Grjc3f/e6qVDgLeBW4GPAru02/V9M9vNzOqzNfkcZgAnmdlwM9sJOBV4KvOaknk3o8QuxfIr4HVgEXA+0Jhpv5+glr0M2Bf4IJNccfd1wPcJepRvATtFbZ+Luy8hKF+86O4tMdsuAP6QOd8C4CZ3X05QlulhZjMJEvgf4+Iv0McJfknc1GoQ9Rjg6czrK4CzMnG1Pv5XCX5ZLQcOjHhf8wnGDv4IPAdc5e6vdCJOqQKm9dhFRKqLeuwiIlVGiV1EpMoosYuIVBkldhGRKqPELiJSZcriztO+/Qb6h4YNL3UYIiIV480F895z9yFhr5VFYv/QsOH88OaHSh2GiEjFmPCpvRbmek2lGBGRKqPELiJSZZTYRUSqTFnU2EWkOtRYC4N22ExDXeSSPVKAzVtqeP+DBlo8/364EruIFM2gHTaz87BB9O3bHz2oKTl3Z+3aVdC4knfX9cx7P5ViRKRoGupalNSLyMzo23dAwZ+AlNhFpKiU1IurM9dTiV1EuqVX5r7MK3NfLnUYqVCNXURK5vF5y7lx5j9oXNvEsL49+eKYEZy4/05dcu5XXpkLwAEHHtQl5+tKSuwiUhKPz1vOdx6fT9OWoH68fG0T33l8PkCi5L5x40bO+8wk1q1by8CBA5ly88/54sUX8O5777Lvvvtzww9+zLev/iaPPfp/APz6V/fwyLTpbNq0iYsu/ByNjcvZeefh/HTKVLZu3drmWLffcQ9NTU2cd+7ZrN+wnhEj9uCnU6YmvxhFplKMiJTEjTP/sS2pZzVtaeHGmf9IdNy/zX+dmpoaHp/+NGdPOpe777qDkfvux+PTn2ZF43LmzXuFq67+Lpf+x2Vc+h+X8ci06QDcccetjBy5H489PoM99tiTu+68o8Ox1n/wAStWNPK5Cy7k4UceZ9GihbzzzopE8aZBiV1ESqJxbVNB7fk66OBDGDlyX06beBK/++3TvPHGGzz66P9x0vjjeHvh2yxfvix0v7/Nn8+oUYcDMOrwI1iwYH6HY/Xq3Zv6unru/OVtTP7381i1ahVNG5PFmwYldhEpiWF9w+dl52rP17xX5vJPHzuSBx9+lNWrVzFixAguvPALPPrYU3z9G1exyy67AtCzZ082bNgABPPF9xk5ktmznwdg9gvPs88++3Y41nN/epY777ydUyacys9v/SW9e/dOFGtalNhFpCS+OGYEPevapqCedTV8ccyIRMf98Id3Y+otUzju2DG8s2IF55z7WZ6e8SQnjjuG2279OcOH7wLA2LGf4tFpj3D8cWP505+e5dxzP8vrr7/GieOO4c03/87Zk87pcKyDDzmUMWM/xY9+eAOnnHwCAMuWL00UbxrM3UsdA3t+9ADXsr0ilW/4gA3sscfeeW9fylkxleTNNxewdFXbTwcTPrXXi+4+Kmx7zYoRkZI5cf+dlMhToFKMiEiVUWIXEakySuwiIlUmlRq7mV0InJn5sT/wF3e/II1ziYhIW6n02N39Zncf4+5jgD8A/5vGeUREusLXrris0/ueNP64IkaSn1RnxZjZcGCou89O8zwiUpnqX3+Ann+8hpp1S2nZcThNn7iS5pGnlzqsDv772htKHUJB0p7ueDFwc9gLZjYZmAww5EM7pxyGlNJL62cxY83drN76Hv1rB3Nsv0kc3Gd0qcOSEqt//QF6z/gKtmUjALXrltB7xlfYAImS+w3Xf5+RI0cy/qRT+OEPrmennXbiiemPtVkEDIKe9CGHHMZrr87jgYemdVg87PY77qGurm7bto8+9hQATU1NXHTh51i2bCn9+vXnttvvora2tsMCYg0NDR1iC1torKGhoUMsSaU2eGpmNcBYYGbY6+4+1d1Hufuovv0HphWGlNhL62fx8KqbWb31XcBZvfVdHl51My+tn1Xq0KTEev7xmm1JPcu2bKTnH69JdNyJp57GjBlBEv7Tn/7I0qVLOywCBsGyAUcc8U/bEmnYgl9h7rj9F+y//4E88eTvOOWUibz++quhC4iF7ptju/axJJXmrJijCAZNS39rq5TMjDV30+yb2rQ1+yZmrLm7RBFJuahZF34rfq72fO25514sW7aUtWvX0q9fP5YtWxq6CNjIkftx8ikTt+0XtuBXmAULFnDYYcENn2dPOodDDx0VuoBYmFzbtY8lqTQT+/HAMykeXyrA6q3vFdQu3UfLjsMLai/EYYeN4pabb2LciePZa6+9QhcB67NDnzb7hC34FWbvvffmr38Nhg1/cMN1/PKO20IXEAuTa7v2sSSVWmJ39yvd/cG0ji+VoX/t4ILapfto+sSVeF2vNm1e14umT1yZ+NgTJp7GzVNu4vjjT+Tcz5wfughYe2ELfoU59zPnM/fllzhp/HHMfXkOZ551dugCYqH75rldUloETFKVrbG3LsfUWw8mDrhQA6hVqNBFwCplVkypaREwKSvZ5N3ZWTGaUVOYSrtezSNPVyJPgRK7pO7gPqM7lVza9/azM2qyx5S2dL0kS2vFSNnSjJrC6HpJlnrsUraSzqiptLJEUpqBJFnqsUvZSjKjpjveGKUZSJKlxC5l69h+k6i3Hm3a6q0Hx/abFLtvdyxLJLle3UGShbzy3TfJOYpJpRgpW0lm1HTHskTSGUil8NTi6Ux9dQrvbFzBh3oNZfJ+F3HcruNSOVeShbzy3bdcFgtTYpey1tkZNf1rB2fKMB3bq1lnr1cpPLV4OtfNuYZNW5sAWLGxkevmBOvEJEnu7RcBGzFiBBNPPb3NQl4QvgjYOf92FqtXrWT3j4xg5Mj9+MplX922bXbfa//7v2hubua5555l3bp13P/AIwwdOqzDdmGLhbW0tHDeuWezfsN6RozYg59Omdrp9xlFpRipSt21LPHS+llcv2wyX198Gtcvm1zWYwpTX52yLalnbdraxNRXpyQ6bvtFwI497oTQ7dovvPXGgr8xfOfhTH/yd7z1jze3JfUwb/3jTR6f/jQnnzyBZ56ZGbpN2GJhK1Y08rkLLuThRx5n0aKFvPPOikTvNRf12KUqVWJZIqlKm8f+zsbwpJarPV/tFwHr0yd8HZb2C2/ttPPOvPTSHMaPO4YLLrw48hxn/mvQQdhll11p3twcus2CBQs4JXP87NIBixct4s5f3sY9d/2SVatW0bSxKXTfpJTYpWpVUlmiGKIGjMvxOnyo11BWbGwMbU+q9SJgubRfeOu3T8/gP796BSedPCH2+H16xy/alV0sbPSYsfzghusYMmQIS5Ys5pQJp3LqqZ9m/InHxr+RTlIpRipWJZUdukKlDRhP3u8ietT2bNPWo7Ynk/e7KPGxWy8Clq8DDjyIy7/6ZU456QTO/+w5vPbaq4liCFssbMzYT/GjH97AKScH5aFly5MtUZyLFgGTiqTFxTq6ftnkHAPGQ/jPndMZpGuv0EXAunJWTJw7br+VB+6/j/r6eurq6/niFy/lE0cdXZJY2tMiYNItVFrZoSsc229S6C+7ch4wPm7XcSVL5O195rzz+cx555c6jKJQYpeKVGllh67QHQeMJZwSu1Sk7jpPPU45DBi7O2ZW0hiqSWfK5UrsUtZyLeSVT9mhUhcBq9S4ATZvqWHt2lX07TtAyb0I3J21a1exeUth81yU2KVs5TMvO1cCrLQ53VmVGnfW+x80QONK3nuv+5bEim3zlprguhZAiV3KVtwAaVTZoVIHVys17qwWr+HddT3jN5RUpZrYzWwKMN3dp6V5HqlOSQZI017LPa1yiQaFpRhSu0HJzI4ChimpS2clWV88zbXc01zrXWuqSzGkktjNrB74X+BtM4u/P1ckRJKFvNJcyz3Ntd676+JlUlxp9djPBV4DrgOOMLMvtt/AzCab2Wwzm7129cqUwpBKdnCf0UwccCH9a4cARv/aIXnfWXpwn9Ec0nsslvknbtRwSO+xRVnLPc1ySZL3LJKVVo39EGCquzea2V3A94AbW2/g7lOBqRAsKZBSHFLhOjsv+6X1s5iz4fc4LQA4LczZ8Ht267FP7PF62Q5s9HWh7ZD+HPpymIsulS2tHvvfgRGZ70cBC1M6j0ioJOWSXNOvs+0ql0i5S6vH/gvgVjM7C6gHPp3SeaQMlOMNNUnKJRtaPohs1637Uu5SSezuvg74lzSOLeWlXG+oqaeBZjaFtsfJp9SicomUM92gJImU6w01W9hcUHtrx/abxIMrb2IrW7a11VLXptTyyMqf8cL6p3BaMGo4vM9xTBh4QfLARYpAiV0SKdcbapzw8fhc7XHbtf75kZU/4/n1T7R6rWXbz0ruUg70BCVJpFxvqLEc/7Rztbc2Y83dtLC1TVsLW7cNvL6w/qmw3XK2i3Q19dglkbRXWYwqeUQd9/A+x7XpVWcd3ue42LjiPoVkp1C217q9HAeUpftQYpdE0lxlMarksVuPfSKPm03+Ub8Ucu0fN3hq1IQm9+yngXIdUJbuQ4ldEktrlcWokseCphdjjzth4AU5a95RccV9Con7NFCuA8rSfSixS6qSDK5GlTzyOW5UGSdq/7hPIXGfBsp1QFm6DyV2SVWS2++jSh79agdFHjdu5krvmh3Y0NJx2YDeNcGyAXHz1KM+DeixfVJqmhUjqUpy+33rgc727XHHjZu5kusxkp14vGQHWnJASk09dklVktvv40oeUceNm7my0cOXDcjVXoiD+4xm4ab5beLOd2VJkWJQYpfUJbn9PqrkEXXcuJkrcSs4JpFkZUmRYlBil5JKa7533MwVMwi7CTW7gmOSuDQrRkotNrGbWR/gVII11nsCi4FH3X1eyrFJlUtzvndcGSdqBcekcWlWjJRaZGI3s38FTgTuAr4LbAQ+ApxhZl8ALnMvQlFSuqW0e7adnbmSNC7NipFSyzkrxsw+Agxx93Pc/Ul3X+3um9x9vrt/B/gBcHaXRSpVJ+2e7SMrf8Y3Fp/O1xefyjcWn84jK3+27bWomStJ49KsGCm1nD12d38L+En2ZzP7HnAkYNs38U+mG55UszR7tnHz2KNm6wRtnY9LD+KQUitk8PQI4CR335BWMNK95LOAWGdFzWPPlmdyzaopRlx6EIeUUiGJ3YC/mtmyzPfqsUsiB/cZzbyV9/G6L93WtieD2iTEzj7QIskKjJqHLpWukMTeCJzv7ovSCka6l6eXXBkk9VZPj37dl/L0kis5ZpdrUn2gRdTMF0Dz0KWiFbKkwHDgdjP7XfYr14ZmVmdmi8xsZubrgOShSrWZ1fJam6QOgFnQTrIHWjRYz8j2qJkvUa+JVIJCeuxnAYcB0wmmPv4oYtsDgXvd/fIEsUkRpfngh86WS8KLJdvb8ymn5LLZOz7IunV7Z2a+aB66VIpCeuz3QlBYB14D7ozY9mPASWb2vJn9wsx0h2sJZcsOwUwP31Z2eGn9rMTHzpZLWpctnl//RJuphbnk+seXbU/yeLtB9Ilsj3qkX7k+7k8kX4Uk9gZ3fxzA3e+BHP9zAi8Ax7j7EUA9wU1OUiJplhaSlEtG1+zbcTlF96Cd6NUd41yyajX17Y5d784lq1YDwcyXhnYfWBuo49h+kzQPXSpeIT3pl8zsZuB54HDg1Yht57pvyySzgb3ab2Bmk4HJAP0GDWXO4ncKCEUKsZqOc7IhGDBMet3dW7bf2dCuvf2x+/bozR4f2r7I1uABx2MrX2+zZIuZMXjA8UDw+LsX1j+Jt9rCMHbrsU9sXA3Na3Af0KaG7+40NK/hxSUr2X/tcg5qep+f9u9DY10tw7Zs5eLVa9iybjnzdvwkhzCJeTzMBlbSm4Hs7xPxlSOZs1L/TqX8mRewALWZnQzsA8x392kR290HfA+YB8wArnH3p3NtP+qw/f2FZx/MOw4pzPHTLmD5ho714Z16D+bJk+NLJlEO/tVptLQfAAVq3HnprO1/pw/Ph7fnb2iT2K9fNjnHjUBD+M+dp8a+HuXGtybSWNcxrmFbnE/UTeVb738WW9vY4XXvOwwuyvlPW6Rs1PT66IvuPir0tVw7mdnuZnZJ6zZ3n+bu17v7NDPbM9PrDvMdghr8S8BzUUld0nfJgZPoWdu2tNCztgeXHJi8tPDptR+EllM+vTZ+CaG4Acwkt/aHJfU27WtXhO+YbX91Okw5Ga49Ivjz1emx5xQpF1FLCrxtZu+Y2d3AHcBfgA0Ei4CdRTD98Ss59p1HMDNGysD43Y4G4Cdz76Zxw/sM6z2ISw6ctK09iW9s6YGtXcdv+u5IC0FP4V/WruPrW9pON9x/117Mffk95izefuNybwawgZUdjtmbAcxZ/A69WurYWNPc4fVeLXVtyjw1NT04aHi/ttvYjjnWW98xWK6371AI6bHTd2iQxKdfg21pCtrWNuLTrwm+329c+IUQKSORNXZ3/5WZPQZMAK4iWLZ3EfCQu7/SBfFJkYzf7eiiJPIORl/E16dfwzdWrt7W5HU9YdyX22y2Z5+NfOvMtrNKDlt4Dt9+4Raatm4f2O1Z24NvHn4O43cbzNP3bmZjSAG/B5u3Hevv63vxq8c71r0j11v3IG5vnbyzcY++CGZNadMOYFua8FlTlNilIsQOnrr7OoJle+9KPxypOJlE57OmBGWMvkOD5JhHAoz7JLEmvJqyvf3V6ew+82a+sa6RjUuG8vruX2Dp0OC8Ueutb4t7ycv4Sw+Bt4DVwAHjg/ZpV4WfuHX55tXp0In3LNIVNL9ccnp4Psx9OZ+bcg6HQbfBoMyP84B50fsdeNBgJu4T/Uli2FZnedgA6FbfVi6pz/Sse29q5IAF3+Xt99cwb8dPRpZ5gGD/Vx7DPHOzk7fgrzwGuxwEvfrCxjUdA+rVd/u+KtVIGVNil0jtpygWw5vv5PdslkvWbeTb/XrRVLN9jL9nSwuXrNsYWi5p8E2ctvlOTjvzjNgyD1Miyi25Zopl21WqkTKnxC5la/zqlVhzL/5nQP9tc82/tGo1J67fmHunTLlk/G5Hw5KX+cnC39NYA8Na4JJdjtz+6SBuVkyYpnWd31ekCymxS/nq1Zfx69cwfn3bRwB4r8wMmJhyyfjn7uOk1oOjy+6D/nsGveqoWTEQ/VrcviIlpsTeXaQ42JfaAmNxJZGo1+LKJVGzYgB/9DuYb9n+mtVtey1uX0CDq1JSSuzdQYqDfVHrmidO7k1rC2tv/VpYj7p1e9RsnlenQ43B1lb71bQaxI2bCaTBVSmxvBO7me0LnAI0ZNsyD7WWcpfiYF/UAmOJE7vVBFMRw9oh+rV87Dcu/P3PmoJtbXtjlG1tbnu9cu2b3V+Dq1JChfTY7wOuBRanFIukJZ/BvrDSQW18Esrntv/hK6Yz8u2b6LVpBRt7DKVu4L+ziQnxcYcl7qj2uNfay1UuSTo4qsFVKbFCEvsKgodnbI3dUspL3GBfjtLBLgfB3E2Ht1kGoL24ZQH2X/c7Dnj/JzRkevW9NzVyTOP1vLy4AfaJ+cXRd1iOuIdtizPna+S49TR7J2tUuSTp4KgGV6XEYhO7mZ2b+fZl4Pdmdi+wHsDdf5libFIscYN9OUoHo96YwqiYlQ7j54vfibUr1TT4Jka9MQWOjUnscQOcUe+pvic0h0yLrO8Z+Z591pT8BkcTxC2Stnx67NlRo5czX9m2/Nf7ldKKG+xLUDqIXWAsSVkiLu650/CFL2zffvgB219rbiJUtj0qrgTLJOQVt0jK8lkr5g4AMxvk7u9n283sjDQDkyKLGuxLWDqIXGAsaVkiV9xPXgsLX2izRJgvfCFoP/6K+PPGvR51vZLELdIFCnk03m/a/XxxMQOREhp9UVAqaKVopYO0jv3SQx3WfbRMe17nTfM9i5RYPjX20cAYYHcz+1amuQ+wKsW4pCulWTrIZ853Z84bN2Nmv3HRpRqVS6SK5VNjfxuYCUzM/GnARmBOWkFJCaRZOsh17EQ38sTMeokr1UTFJVLhYksx7r7Q3WcBt7n7M+4+y92fd/eOj7YRKUSOmSnMmrK9Idcj6urbllG2ybbHlWpEqlgh89g/3PoHM/tnYLi731fckKTbiLvtP6pHHzfrpTM3N4lUiUIGT3c3s9lmdmnm5/8Azk4hJukuct3+n22P6tHnmlWjm4BECuqx7+zuo8zsOeDHwEAgshxjZkOBJ9z9kAQxSjHEDVImWY2ws8eO61VHzTU/+du6CUgkh0IS+z/M7Elgs5l9CdgTeDNmnxuAXp0NTookbpAyySBmkmPHLRkQ9Yi6uFktcccWqWJ5l2Lc/d+As4DjgL8ChwHX59rezD5JsPRAjkKqdJm4Qcp8BjHTOHbcXPK49dj3GwcXTYMrng/+bP1LSPPUpRtLsmzv2FzL9ppZA/BN4FTg4RzbTAYmA3x4150LCFkKFndbf5Lb/pMcO26uefZRdO3lam9N89SlGyt02d7vA4vy2PYKYIq7rzbr+JR5AHefCkwFGHXY/lp3Jk1Jb6+PElUuiTt20mUB4mieunRThcyKWQHck5nHPisztz2XY4CLzWwmcLCZ/TxJkJJQmrfXx5VLoo6ddFkAEQlVSI8972V73X3bilBmNtPd/z1RlJJMXFkiyW3/ceWSqGNP+1b4vq2XBYiKS0RCFZrYWy/bmxd3H1NIQJKSuLJEZ2/7z6dckuvYcY++yyduEemgkFLML4H3CX4ZLABmpBKRlJe4WS9JyiUHn9phtRfPtItI5xWS2H8NjAUuyOx3VyoRSXmJu+1/v3Ew7kq87zAcw/sOg3FX5tfLPv4KOOR03GpwwK0GDjl9+yJdItIphZRihrj7GWb2O3d/1qyQx8FLxUq7XHL8FUrkIkVWSGJ/w8xuBXYys6sIyjFS7cp5Ma0kyyCIVLG8E7u7TzazCcB84G9A6M1JUmXK9db8RGu5i1S3gsop7v6Iu1+X+VM3FXUH5TqXPMkyCCJVrpBSjJRaKUoPxZhLnkbcSZZBEKly+Tzz9Pd0fAaZAe7un0wlKumolKWHJIOjacWddLkBkSqWz6Pxxrr7J9t9jVVS72KVWnpIK+5yLRGJlAGVYipFpZYe0opbyw2I5KTEXikqtfSQZtxabkAklG4yqhRplx5enQ5TToZrjwj+fHV6fq+VOm4R6UA99kqRZukhaoATkg1+qmQi0uWsHKajjzpsf3/h2QdLHUb3NeVkLKRc4pmbkHK+dtG01EMTkXA1vT76oruPCntNPXbp3ABnuQ/ainRjqrFL7oHMvkOjXxORsqTELtEDnBr8FKk4uvNU8hrg1OCnSOVIbfDUzAYChwFz3P29qG01eCoiUpiowdNUSjFmNgB4FDiC4AHYQ9I4j4iIdJT3rBgzqwUOBXplmoa7+705Nj8Q+LK7/zmT5A8FnkwUqZQvPfBCpKwUMt3xfmAd8BFgGTAACE3s7j4LwMyOJui166Ec1UoPvBApO4WUYgYDnwXecfcz2d5zD2VmBpwJrAKaOx2hlLdKXXVSpIoVktgXAWcAm8zsa0DfqI09cDEwFzil/etmNtnMZpvZ7HffXVVIzFJOKnXVSZEqVkhiPwd4GrgIWEGQ5EOZ2eVmdm7mx/7A6vbbuPtUdx/l7qOGDBlQQBhSVnQDk0jZKSSxD3D3d919tbvfChwUse1U4BwzewaoBZ5KEqSUMd3AJFJ2Chk8/Q3Q+oaki4H7wjZ091XAsQnikkqh1RtFyk4+d56OBsYAu5vZtzLNfQgGRUX0wAuRMpNPj/1tYCYwEZiVadsIzEknJBERSSI2sbv7QmChmd2WnZ8uIiLlq5Aa+41mdhIwFHgNWOjuy9IJS0REOquQWTG/BsYCF2T2uyuViEREJJFCEvsQd/8K8IG7P1vgviIi0kUKKcW8YWa3Ajub2VXAgmIFsXX9BtY+P7tYhxMR6dbyTuzuPtnMJgDzM19FW9irZbOxcUltsQ4nItKt5V1OMbOazPbNdNR7UK8AAA0QSURBVHyikoiIlIlC6uS/IrjzdD1wInB3KhGJiEgihdTYP+Tu2xb+yjwLVUREykwhiX2DmV0BvEjw8Iw1Zna0uz+TTmgiItIZhZRi/gL0AD5O8AthDsEaMiIiUkYKmRXz7TQDERGR4tBNRiIiVUaJXUSkyiixi4hUGSV2EZEqo8QuIlJllNhFRKpMITco5c3M+hEsQVBLsATBme6+OY1ziYhIW2n12CcBP3T344BG4ISUziMiIu2k0mN39ymtfhwCvJPGeUREpKNUEnuWmR0JDHD3P4e8NhmYDDB88OA0wxDpck+squOWxgZWNBtD653PD9vMCQO2VO15pbykNnhqZgOBG4Hzw15396nuPsrdRw3asW9aYYh0uSdW1XHtkh40NtfgGI3NNVy7pAdPrEq1H1Wy80r5SSWxm1kD8Bvga+6+MI1ziJSrWxobaHJr09bkxi2NDVV5Xik/afXY/x9wKPB1M5tpZmemdB6RsrOi2Qpqr/TzSvlJa/D0ZuDmNI4tUu6G1juNIcl0aH26T5Qs1Xml/OgGJZEi+/ywzfS0tsm0pwUDmdV4Xik/SuwinfDEqjomvt6bI+f2YeLrvdsMUJ4wYAsnDmimBgecGpwTBzSnPjsln/NGxS3VQ4ldpEBxs0+eWFXH46vqacEAowXj8VX1XTIrJuq8mjXTfSixS9WK651GvR71Wtzsk7jX0+o1J41Lqod+VUtVyvZOs4mssdm4dkkPIChZRL0ORO4bN/skbAAz2x4XVxJR520dX664pXqoxy5VKUnvNW7fXLNM8pl9kmavOdd/5mx7krilsqjHLlUprnfamd5r9rXPD9vcptcN+c8+KUav+Qtv9mT2+tptP4/qs5Wb9miiJcf22fYkcUO6yxVoKYTiUmKXqhQ3p7sOaA7Zrw4YFLNvNuF0JhH1rXXWbO147L61+fWatyf17ceYvb6WL7zZk345jt2vNnncaZaQ0jx2d6XELlUprncaltSz7fn0bE8YsKVTScdz5O9c7e21T+oBY/b6WvrWhB+k9bE7G3dUCSlp8k3z2N2VErtUrKiP7ycM2MIdK+p5a/P2yvNO9S15JYoTBmxh7voaHl5ZTwtBjTpsPnhner7rWsJLLq3br1vS0ObcEwc289Vd4ssl+Ry7s/IpIXX2mmhQt/g0eCoVKW5O9hfe7JlJ6rbt663NNXzhzZ55HTut+eA9c/yPy7Zft6SBB1e2PfeDK+u5bkn84Gqag6Nxx05yTTSoW3xK7FKR4maXRJUsIBhwhPaJwxnVZ2uq88E35hjhzLY/vLI+NO6gPTruNJcUiDt2kmuipRCKT4ldgMq71Tzpx/eb9mhqlSSDr+zskjRm1OQrbmZLVNwnDNjCFbtsYlh9C4YzrL6FK3bZVJQlBeKOneSa5BO3FKa8//dKl6jEWQnFWMnwpj2aQtt71oT3rLPlkrhz1xCeoHO157NN6x5YrrghenA06d9z1LGT/n10dlBXwqnHLhV5q3ncx/f6HPvlam8trlwSd+6JA5sJK5dMHNjcociSlW2P2jepNJc6UDmlvKjHLhU5KyFuTnauvl8x+oRx587OYAmb2fLgyvBfLdmUGLVvUlF/z8XozUPn5shL8SmxS8U+oCHN0kCSc0OQoMOScT6lllz7JhV1TYoxl1zllPKhUoxU5cfozw/bTH2791RfBu8pzVJLnKi/50r81Ca5KbFL1c5KaH83Z753dw7L0avP1V6Ir+6ymdMGtn0YxmlFKrXEifp71lzy6qJSjADV9zH6lsYGtrQbqtxCfqWFpItlxUmr1JKPXH/Pab9n6VqpJXYzGwrc7+5HpXUOkVySzquG0g0ElmKlw1K/ZymuVBK7mQ0A7gD6pHF8kTiVOq+6lPcUVNuntu4srRr7VuBMYG1KxxeJVKkDwpV4T4GUn1R67O6+FsAs98deM5sMTAYYPnhwGmFIN1appQXNTpFiKNngqbtPBaYCHDRiDw29S9FVYmmhUu8pkPKi6Y4iZaRSS0hSXjTdUaSMVGoJScpLqond3cekeXyRalSJJSQpLyrFiIhUGSV2EZEqo8QuIlJllNhFRKqMEruISJVRYhcRqTJK7CIiVUaJXUSkyiixi4hUGSV2EZEqo8QuIlJllNhFRKqMEruISJVRYhcRqTJK7CIiVUaJXUSkyiixi4hUGSV2EZEqo8QuIlJllNhFRKpMaondzH5hZs+Z2TfSOoeIiHSUSmI3s9OAWnc/EhhhZnulcR4REemoLqXjjgHuy3z/FPAJ4I3WG5jZZGBy5sdNO006a15KsSQxGHiv1EGEUFyFUVyFKde4oHxjK0Vcu+V6Ia3E3gdYmvl+JXBo+w3cfSowFcDMZrv7qJRi6TTFVRjFVRjFVbhyja3c4kqrxv4B0Cvz/Q4pnkdERNpJK+G+SFB+ATgIeDul84iISDtplWIeBv5gZjsD44CPxWw/NaU4klJchVFchVFchSvX2MoqLnP3dA5sNgA4FnjG3RtTOYmIiHSQWmIXEZHS0KCmVA0zG2hmx5rZ4FLH0lq5xiXVq0sTu5kNNbM/xGzT5XesxsVlZnVmtsjMZma+DuiCmPqZ2XQze8rMHjKzhhzbden1yieuEl2vAcCjwBHA781sSI7tuvp6xcZViuvV6txDzWxOxOsluYM8Kq4S/fvK65zlcsd9lyX2zD/wOwjmuOfapsvvWM0nLuBA4F53H5P5eiXtuIBJwA/d/TigETih/QYlusM3Ni5Kc70OBL7s7t8DniTk3okSXa/YuCjN9cq6ge1Tk9so8R3kOeOidP++Is9ZTnfcd2WPfStwJrA2YpsxdLxjNW35xPUx4CQzez7zGzmt2UTbuPsUd5+R+XEI8E7IZmPo4uuVZ1yluF6z3P3PZnY0Qe/4uZDNxtD11yufuLr8egGY2SeB9QS/oMOMoev/P+YTVymuVz7nHEMJrleYLkvs7r7W3dfEbNb+jtWh6UaVd1wvAMe4+xFAPXBi2nFlmdmRwAB3/3PIy11+vfKMqyTXy8yM4Jf0KqA5ZJOSXK884ury65UpoX0TuCJisy6/XnnGVYp/X/mcs2T/H9srt8HTcr1jda67L898Pxvoko9YZjYQuBE4P8cmJbleecRVkuvlgYuBucApIZuU5HrlEVcprtcVwBR3Xx2xTSmuVz5xleJ65XPOsslf5ZI4s8r1jtU7zewgM6sFJgIvp33CTM/lN8DX3H1hjs26/HrlGVcprtflZnZu5sf+QFhiKMX1yieuLr9ewDHAxWY2EzjYzH4esk0p/j/mE1cprlc+5yyf/OXuXfoFzMz8uS/wX+1e60twwX4IvA70K5O49ifobb0CfK+L4rmQ4KP7zMzXVeVwvfKMqxTXawAwA3gGmALsVybXK5+4uvx6tTv/zHL7/xgTVyn+fbU5Zzler9ZfZXeDkumO1YLoehVG16swul6FKZfrVXaJXUREkim3GruIiCSkxC4iUmWU2EVKyMw+UsC2I9KMRaqHErtIiZjZvwITCtjlZDM7O614pHoosUtVysyD7uy+P87Rfp6ZnZf5fnczGxP2Wp7n6Auc4u6h5wrj7v8DjDezHfPdR7onJXaRdtz90jw2251gbZDOmkCw+Fyh7iK4QUYkJyV2KSkz62Vmj5rZM5llgOvMrLeZ3Z9p+2lmu6stWC54Vua1OjOrNbN7zOxZM3vEzOoLOO8MC9ZJf9/MBpvZ7FavzWz1fX0mrt8DZ2favgT8GDgvs4Rrdineg8zsd2b2mpntHxPCocBfMsczM/tp5n3MNLNhmT/vMbPfZr7+O7Pfn4FD8n2f0j0psUup7Qu0uPvRwG0Ea2xMBuZl2nYyswMz2/7B3UcDKwh6vIOAx4DRBKtzhi2Jm8scYDzwp8yf83Nsdxqw0N3HAgthW0nkUuB2D5ZwfTez7eHA8cC1hK8J01ovYEPm+5OBOnf/Z4Llag/LtF8J7ErwXrPPDd5I7uVsRQAldim9vwLzzOwpgqS4AfgocGqm5zwCGJ7Z9sXMn3MJSiHNwEkEa9eMoLCE91fgDIJfDP/S6tjtfYTt64LMzrFN1r3u3gwsAkIfjNLKosyxAfYBngdw90eB6Znv3waWufsHgLWKZ3HMsaWbU2KXUjsIeNaDB3cMAI4C/gb82N3HAN8gSIIQrGcOQSni7wS96XmZP5dSmDkEDwl5EvgUQaIPs4hgfZfsebM2Ar1h27K8EKwhnq9HCZbyheDTwuGZY00Cvhux3xmZfUVyUmKXUnsbuMTM/gQMI+gV/y8wzsyeAT7P9h7q4ZlefH+C5PYsQXL8IzCQ7T37fCwA3s+cfxFBog/zALB35rx7t2qfA3zUgkcqnhm2YxR3nwvsYmZ7A9MAz7zfcwjq9x1kth2e2VckJ60VIxXBzK4mWIFzZolDKZrMlMez3f2WPLf/PHCPu0c97UtEiV1EpNqoFCMiUmWU2EVEqowSu4hIlVFiFxGpMkrsIiJVRoldRKTK/H8bPT0XpfrwewAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt_data(x1, x2, tree_predict)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 使用随机森林进行预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:15:43.256005Z",
     "start_time": "2020-09-01T09:15:43.251022Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**使用默认参数进行预测**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:17:06.599229Z",
     "start_time": "2020-09-01T09:17:06.419702Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9555555555555556"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rfc = RandomForestClassifier()\n",
    "rfc.fit(X_train, y_train)\n",
    "predict = rfc.predict(X_test)\n",
    "accuracy_score(predict, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-09-01T09:22:25.204075Z",
     "start_time": "2020-09-01T09:22:22.059469Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "rfc_predict = rfc.predict(z)\n",
    "\n",
    "plt_data(x1, x2, rfc_predict)\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
